import { defineStore } from 'pinia'

// 1.定义容器
// 参数1：容器的ID，必须唯一，将来Pinia会把所有的容器挂载到根容器
// 参数2：选项对象，在其中配置容器的state、getters、actions
export const useUserInfoStore = defineStore("userInfo", {
    /**
     * 类似于组件的data，用来存储全局状态
     * 1. 必须是函数，这样是为了在服务端渲染的时候，避免交叉请求导致的数据状态污染
     * 2. 必须是箭头函数，为了更好的TS类型推导
     */
    state: () => ({
        token:"",
        username: "",
        role: {},
    }),
    /**
     * 开启pinia的持久化插件
     */
    persist: true,
    /**
     * 类似于组件的computed，用来封装计算属性，由缓存的功能
     */
    getters: {

    },
    /**
     * 类似于组件的methods，封装业务逻辑，修改state
     */
    actions: {
        set(data) {
            this.token = data
        },
        refresh() {
            console.log("刷新token")
        }
    }
})

// 2.使用容器中的 state

// 3.修改state

// 4.容器的action的使用